<?php

/**
 * 获得根路径
 * @param string $path
 * @return string
 */
function basePath($path = '')
{
    return __DIR__ . '/' . $path;
}


function LoadPartial($name,$data = [])
{
    $partialPath = basePath("App/views/partials/{$name}.php");
    if (file_exists($partialPath)) {
        extract($data);
        require $partialPath;
    } else {
        echo "{$name}视图不存在！";
    }
}
/**
 * 加载视图
 * @param string $name
 * @parm array $data
 * @return void
 */
function LoadView($name, $data = [])
{
    $viewPath = basePath("App/views/{$name}.view.php");

    if (file_exists($viewPath)) {
        extract($data);
        require $viewPath;
    } else {
        echo "{$path}视图不存在！";
    }
}

/**
 * 检查某个值
 * @param mixed $value
 * @return void
 */
function inspect($value)
{
    echo '<pre>';
    var_dump($value);
    echo '<pre>';
}
/**
 * inspectAndDie函数的目的是在输出一个或多个变量的详细信息后，
 * 立即终止PHP脚本的执行。这在调试时非常有用，
 * 尤其是当需要验证代码某一点上的变量状态，
 * 并确保没有后续的代码执行影响调试结果时。
 * @param mixed $name
 * @return void
 */
function inspectAndDie($value)
{
    echo '<pre>';
    die(var_dump($value));
    echo '<pre>';
}
/**
 * 清洗数据
 * 该函数接收一个字符串参数，首先去除字符串的首尾空白，然后使用 PHP 的 filter_var 函数
 * 与FILTER_SANITIZE_SPECIAL_CHARS 过滤器来清洗字符串。
 * 这个过滤器会转义HTML中的特殊字符,*例如 ‘<' 会变成‘&lt;'，这可以防止跨站脚本攻击(XSS)等安全问题。
 * @param string $dirty 待清洗的原始字符串数据。
 * @return string 返回清洗后的安全字符串。
 */
function sanitize($dirty)
{
    return filter_var(trim($dirty), FILTER_SANITIZE_SPECIAL_CHARS);
}
/**
 * 重定向到给定的 URL
 * 该函数通过发送一个 HTTP Location 
 * 头部来重定向用户到指定的 URL地址。
 * 函数执行“header’函数后会立即调用‘exit”，
 * 确保在重定向后停止当前脚本的执行，防止后续代码执行可能引起的任何问题或错误。
 * @param string $url 目标 URL 地址。
 * @return void 该函数没有返回值。
 */
function redirect($url)
{
    header("Location: {$url}");
    exit;
}
